package com.lmq.observerMode.impro;


import java.util.ArrayList;

/**
 * 问题：
 * 其他第三方接入气象站获取数据的问题
 * 无法在运行时动态地添加第三方
 *
 * 在weatherData中，当增加一个第三方，需要创建一个对应地
 * 第三方地公告板对象，并加入到dataChange,不利于维护也不是
 * 动态加入
 */
public class WeatherData implements Subject {
    //使用ArrayList管理观察者集合
    //
    private float temperature;
    private float pressure;
    private float humidity;
    private ArrayList<Observer> observers;

    public  WeatherData(){
        observers = new ArrayList<Observer>();
    }
    public float getTemperature(){
        return temperature;
    }

    public float getPressure(){
        return pressure;
    }

    public float getHumidity(){
        return humidity;
    }

    public void dataChange(){
        notifyObserver();
//        currentConditions.update(getTemperature(),getPressure(),getHumidity());
    }

    // 数据有更新时，调用setData
    public void setData(float temperature, float pressure, float humidity){
        this.temperature = temperature;
        this.pressure = pressure;
        this.humidity = humidity;
        dataChange();
    }

    @Override
    public void registerObserver(Observer o) {
        observers.add(o);

    }

    @Override
    public void removeObserver(Observer o) {
        observers.remove(o);

    }

    @Override
    public void notifyObserver() {
        for (int i = 0; i < observers.size(); i++) {
            observers.get(i).update(
                    this.temperature,
                    this.pressure,
                    this.humidity);

        }


    }
}
